import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class IO3 {
    //扫描指定目录，并找到名称或者内容中包含指定字符的所有普通文件（不包含目录）
    public static void main(String[] args) throws IOException{
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要查找的目录：");
        String s1=scanner.next();
        System.out.println("请输入指定的字符：");
        String s2=scanner.next();

        //判断要查找的目录是否存在且这个路径是否是目录
        File str1=new File(s1);
        if(str1.exists()==false||str1.isDirectory()==false){
            System.out.println("当前要查询的路径有误");
            return;
        }
        List<File>file=new ArrayList<>();
        scanDir(str1,s2,file);
        if(file.size()>0){
            System.out.println("一共找到了"+file.size()+"份文件");
            for(File f:file){
                System.out.println(f.getAbsoluteFile());
            }
        }else{
            System.out.println("没有找到含有指定字符的文件");
            return;
        }
    }

    private static void scanDir(File rootDir,String token,List<File>files)throws IOException {
        File[] files1=rootDir.listFiles();
        if(files1==null||files1.length==0){
            return ;
        }
        for (File d:files1){
            if(d.isDirectory()){
                scanDir(d,token,files);
            }else{
                if(d.getName().contains(token)){
                    files.add(d.getAbsoluteFile());
                }
            }
        }
    }
}
